package com.java.sort;


import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * 选择排序：
 *  先假定第一个数为最小的数，每一次循环比较，就会找到最小的数据
 */
public class SelectSort {


    public static void main(String[] args) {

        int[] arr = {6 , -1,2 , 4 , 8 , 56};


        //随机产生一个数组
//        int[] arr = new int[30000];
//        for (int i = 0; i < 30000; i++) {
//            arr[i] = (int) (Math.random() * 60000);
//        }
//
//        Date date1 = new Date();
//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String date1Str = simpleDateFormat.format(date1);
//
//        System.out.println("排序前的时间："+date1Str);
        System.out.println("排序前");
        System.out.println(Arrays.toString(arr));

        selectSort(arr);

        System.out.println("排序后");
        System.out.println(Arrays.toString(arr));

//        Date date2 = new Date();
//        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String date2Str = simpleDateFormat2.format(date2);
//        System.out.println("排序后的时间："+date2Str);

    }







    //选择排序
    public static void selectSort(int[] arr){

        for (int i = 0; i < arr.length; i++) {
            //假定最小数的索引为0
            int minIndex = i;
            int min = arr[i];
            //第一个数是假定了的，自己不要和自己比较
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]) {//说明假定的并不是最小的
                    min = arr[j]; //min就为2了
                    minIndex = j; //minIndex就为1l
                }
            }

            if (minIndex != i) {//自己不要和自己交换，因为假定的是正确的
                //将最小值，放在arr[0],即交换
                arr[minIndex] = arr[i];
                arr[i] = min;
            }


//            System.out.println(Arrays.toString(arr));

        }

    }







//    public static void selectSort(int[] arr){
//
//            //假定最小数的索引为0
//            int minIndex = 0;
//            int min = arr[0];
//            for (int j = 0 + 1; j < arr.length; j++) {
//                if (min > arr[j]) {//说明假定的并不是最小的
//                    min = arr[j]; //min就为2了
//                    minIndex = j; //minIndex就为1l
//                }
//            }
//
//            if (minIndex != 0) {//自己不要和自己交换，因为假定的是正确的
//                //将最小值，放在arr[0],即交换
//                arr[minIndex] = arr[0];
//                arr[0] = min;
//            }
//            System.out.println("第一轮后");
//            System.out.println(Arrays.toString(arr));
//
//
//    }


}
